package com.changanw.aware.service;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.BeanFactoryAware;
import org.springframework.stereotype.Component;

/**
 * @author changanw
 * @version ncc1.0
 * @description 这是一个Bean 工具类，通过这个类可以查询到各种 Bean
 * spring提供了一些列的接口继承自Aware，可以提供一些原始的属性，例如BeanFactoryAware，ApplicationContextAware等，
 * 可以非常方便的获取 BeanFactory、ApplicationContext等属性。实现了这些接口的类，会自动的调用其中的set方法，为属性获取值，然后
 * 随意的使用和操作
 * @date 2023/6/25 15:37
 */
@Component
public class BeanUtils implements BeanFactoryAware {
  private static BeanFactory beanFactory;
  @Override
  public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
    BeanUtils.beanFactory = beanFactory;
  }
  public static <T> T getBean(String beanName){
    return (T) beanFactory.getBean(beanName);
  }
}
